package com.itheima.day18.第三题;

import com.itheima.day10.第五题.Student;

import java.lang.reflect.Field;

/*请编写一个方法setProperty，该方法可以接收三个参数，第一个为Object类型的obj对象，
第二个为String类型的propertyName，第三个为Object类型的value，
方法的作用是能够为obj对象中名为propertyName的属性的值设置为value。在主方法中调用方法进行测试。*/
public class Demo {
    public static void main(String[] args) {
        Student student = new Student("zhangsan", 21);
        setProperty(student, "name", "李四");
        System.out.println(student);
    }

    public static void setProperty(Object obj, String propertyName, Object value){
        try {
            //获取该类的字节码文件对象
            Class aClass = obj.getClass();

            //获取里面的属性
            Field field = aClass.getDeclaredField(propertyName);
            field.setAccessible(true);
            //赋值
            field.set(obj,value);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
